package activitis;

import java.util.ArrayList;
import java.util.List;

import utils.BaseAsync;
import utils.Constantes;
import utils.Encriptador;

import android.app.Activity;
import android.content.Intent;

import com.example.baserapitaxi.BaseRegistroActivity;
import com.google.gson.Gson;

import controladores.ControladorChoferes;

import entidades.Movil;
import entidades.usuarios.Chofer;
import entidades.usuarios.Pasajero;

public class RegistroChoferActivity extends BaseRegistroActivity
{	
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data)
	{
		// Verifico que el codigo de solicitud sea el enviado,
		// y que el codigo de respuesta sea OK.
		if (requestCode == RegistroMovilActivity.REGISTRO_MOVIL && resultCode == Activity.RESULT_OK)
		{
			// Obtengo el string que representa el movil en json.
			String movilString = data.getStringExtra(Constantes.RegistroUsuario.MOVIL);
			
			if (movilString != null)
			{
				Movil movil = new Gson().fromJson(movilString, Movil.class);
				
				// Creo una lista vacia, y ingreso el movil.
				List<Movil> moviles = new ArrayList<Movil>();
				moviles.add(movil);
				
				// Asigno el movil al chofer del registro.
				Chofer chofer = (Chofer) usuario;
				chofer.setMoviles(moviles);
				
				// Inicio hilo de registro.
				new RegistrarChofer(chofer).execute();
			}
		}

		super.onActivityResult(requestCode, resultCode, data);
	}
	
	@Override
	protected void instanciarUsuario()
	{
		usuario = new Chofer();
		
		Intent intent = getIntent();
		
		String stringPasajero = intent.getStringExtra(Constantes.DataBundle.PASAJERO);
		
		if (stringPasajero != null)
		{
			Pasajero pasajero = new Gson().fromJson(stringPasajero, Pasajero.class);
			
			campoNombre.setText(pasajero.getNombre());
			campoApellido.setText(pasajero.getApellido());
			campoEmail.setText(pasajero.getEmail());
			campoTelefono.setText(pasajero.getTelefono());
		}
	}

	@Override
	public void continuar()
	{
		Intent intent = new Intent (RegistroChoferActivity.this, RegistroMovilActivity.class);
		startActivityForResult(intent, RegistroMovilActivity.REGISTRO_MOVIL);
	}
	
	private class RegistrarChofer extends BaseAsync
	{
		private Chofer chofer;
		private int res;
		
		public RegistrarChofer (Chofer chofer)
		{
			super (RegistroChoferActivity.this, "Registrando...");
			
			this.chofer = chofer;
		}
		
		@Override
		protected Void doInBackground(Void... arg0)
		{
			chofer.setClave(Encriptador.encriptar(chofer.getClave()));
			
			res = new ControladorChoferes().registrarChofer(chofer);
			return null;
		}
		
		@Override
		protected void onPostExecute(Void result)
		{
			super.onPostExecute(result);
			
			switch (res)
			{
			case Constantes.Registro.EMAIL_EXISTENTE:
				toast("El Email ya existe.");
				break;
			case Constantes.Registro.FALLO_PERSISTENCIA:
				toast("Fallo la persistencia.");
				break;
			case Constantes.Registro.FALTAN_DATOS:
				toast("Faltan datos papi.");
				break;
			case Constantes.Registro.OK:
				Intent intent = new Intent();
				intent.putExtra(Constantes.RegistroUsuario.CHOFER, new Gson().toJson(chofer));
				
				setResult(Activity.RESULT_OK, intent);
				finish();
				break;
			}
		}
	}
}
